#include"client.h"
int su = 0;
int main(int argc, const char *argv[])
{
	int sockfd;
	struct sockaddr_in serveraddr;
	socklen_t len=sizeof(SA);
	int cmd;
	char clean[M]={0};
	MSGA msga;
	if(argc!=3)
	{
		printf("User:%s <IP> <port>\n",argv[0]);
		return -1;
	}

	if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
	{
		err_log("fail to socket");
	}
	serveraddr.sin_family=AF_INET;
	serveraddr.sin_port=htons(atoi(argv[2]));
	serveraddr.sin_addr.s_addr=inet_addr(argv[1]);

	if(connect(sockfd,(SA*)&serveraddr,len)<0)// 客户端执行马上连接单词服务器
	{
		err_log("fail to connect");
	}

BEF:
	while(1)//一级的界面
	{
		 int k=0;
		 puts("**********************************************");
		 puts("1.Register           2.Login            3.Quit");
		 puts("**********************************************");
		 puts("input cmd>>>");
		 if(scanf("%d",&cmd)!=1)// 检测输入的格式对否
		 {
				puts("input error");
				fgets(clean,M,stdin);
				continue;
		 }
		 switch(cmd)//根据不同的输入命令执行不同的行为
		 {
			case 1:
				do_register(sockfd,&msga);
 
				break;
			case 2:
				k = do_login(sockfd,&msga);
				if(k == 1)
				{
					goto SUPER;
				}
				else if(k == 2)
				{
					goto NORMAL;
				}
				else
				{
					break;
				}
			case 3:
				goto EXIT;
			default:
				puts("input error");
				break;

		 }
	}

EXIT:  

	msga.type=E;
	send(sockfd,&msga,LEN_SMG,0);
	close(sockfd);  //客户端退出的处理   
	exit(0);

SUPER:
	while(1)//二级界面
	{
		puts("**********************************************");
		puts("1.add   2.delete   3.edit    4.Query    5.Quit");
		puts("**********************************************");
		puts("input cmd>>>");
		if(scanf("%d",&cmd)!=1)
		 {
				puts("input error");
				fgets(clean,M,stdin);
				continue;
		 }
		 switch(cmd)
		 {
		    case 1:
                 do_add(sockfd,&msga);
				 break;
			case 2:
				 do_delete(sockfd,&msga);
				 break;
			case 3:
				 do_edit(sockfd,&msga);
				 break;
			case 4:
				 do_query(sockfd,&msga);
				 break;
			case 5:
				goto BEF;
				break;
			default:
				puts("cmd error");
				break;
		 }

	}

	return 0;

NORMAL:
	while(1)//二级界面
	{
		puts("**********************************************");
		puts("1.Edit             2.Query              3.Quit");
		puts("**********************************************");
		puts("input cmd>>>");
		if(scanf("%d",&cmd)!=1)
		 {
				puts("input error");
				fgets(clean,M,stdin);
				continue;
		 }
		 switch(cmd)
		 {
			case 1:
                 		do_edit(sockfd,&msga);
				break;
			case 2:
				 do_query(sockfd,&msga);
				 break;
			case 3:
				goto BEF;
				break;
			default:
				puts("cmd error");
				break;
		 }

	}

	return 0;
}
